아마 대다수가 지난 학기에 그 수업을 수강하셨을 것 같습니다.
이번 수업을 다시 진행하게 되어 영광입니다.
CS231n 수업은 정말 빠르게 성장하고 있습니다.
이번으로 세 번째 개설되었는데요 처음에는 150명으로 시작했죠
지난해에는 350명이 수강하였습니다. 두 배지요.
올해에는 또 두 배가 늘어서 오늘 아침에 확인했을 때 약 730명의 학생이 수강신청을 해주셨습니다.
안타깝게도 강의실 제한으로 수업에 참여하지 못하는 분들도 계십니다.
하지만 강의 동영상이 두 시간 내로 SCPD 웹 사이트에 게시될 것입니다.
오늘 여기 와서 수업을 듣지 못했어도 몇 시간 후면 바로 확인하실 수 있습니다.
CS231n은 컴퓨터 비전에 관한 수업입니다.
그렇다면 컴퓨터 비전(Computer Vision)이 무엇일까요?
요즘은 워낙 컴퓨터 비전이 유명해서 제가 굳이 이 분야의 중요성을 강조할 필요는 없겠지만
어쨌든 제 분부를 다해 컴퓨터 비전의 중요성을 강조할 것입니다.
최근 몇 년간 엄청나게 많은 시각 데이터가 쏟아져 나오고 있습니다.
이런 수많은 데이터는 전 세계 각처에 퍼져있는 무수한 센서로부터 비롯됩니다.
요즘은 스마트폰이 없는 분들을 더 찾기 힘들죠
여러분의 스마트폰에는 한두 개의 카메라가 내장되어 있습니다. 어떤 기종은 세 개도 있죠
어쩌면 카메라의 수가 전 세계 인구수보다 많을지도 모릅니다.
이런 카메라와 같은 센서들이 전 세계 각지에서 매일매일 데이터를 쏟아내고 있는 실정이죠
CISCO에서 수행한 2015 ~ 2017년도까지의 한 통계자료가 이 사실을 아주 적나라하게 보여줍니다.
통계에 따르면 인터넷 트래픽 중 80%의 지분은 바로 비디오 데이터입니다.
심지어 이 결과는 사진 같은 다른 데이터들을 모두 제외하고 비디오만 추산한 결과입니다.
이 통계는 인터넷의 데이터 대부분이 시각 데이터라는 사실을 보여줍니다.
그러니 시각 데이터들을 잘 활용할 수 있는 알고리즘을 잘 개발하는 것이 무엇보다 중요해졌습니다.
하지만 문제 있습니다. 이런 시각데이터는 해석하기 상당히 까다롭다는 점이죠
일부는 시각 데이터를 암흑물질(dark matter)이라고 합니다.
물리학 수업에서 암흑물질을 들어본 분들도 계실테지만
우주 대부분의 질량을 차지하고 있는 물질이 바로 암흑 물질입니다.
우리는 여러 가지 간접적인 측정실험을 통해서 암흑물질의 "존재" 까지는 알 수 있었지만
암흑물질을 직접 "관측" 할 수는 없습니다.
시각데이터가 사실 그렇습니다
시각 데이터가 대부분이지만 사실상 이들을 이해하고 해석하는 일은 상당히 어렵습니다.
Youtube의 통계자료도 있습니다.
YouTube에는 매초 다섯 시간 분량의 비디오가 업로드된다고 합니다.
우리가 "하나... 둘... 셋..." 세고 나면 YouTube에는 15시간 분량의 비디오가 새로 추가된 것이지요
Google 직원이 아무리 많아도 이 모든 비디오를 직접 보고, 이해하고, 정리한다는 것은 사실상 불가능한 일입니다.
따라서 그들이 비디오들을 잘 정리해서 유저들에게 제공하고 또 비디오에 적절한 광고를 게시하려면
자동으로 시각데이터를 이해, 분석하는 알고리즘을 개발하는 것이 관건인 셈입니다.
컴퓨터 비전이라는 분야 주변에는 상당히 많은 분야가 존재합니다. 따라서 다양한 과학, 공학 분야들과 맞닥뜨리게 됩니다.
컴퓨터 비전이 우주(universe)의 중심이라 할 수 있겠죠
하지만 컴퓨터 비전 뿐만 아니라 물리학을 다뤄야 할 수도 있습니다.
광학, 이미지 구성, 이미지의 물리학적 형성 등을 이해하려면 물리학적인 현상들을 이해할 필요가 있기 때문입니다.
생물학이나 심리학도 알아야 합니다.
동물의 뇌가 어떤 방식으로 시각정보를 물리적으로 "보고 처리하는지"를 이해하려면 말이죠
물론 그 밖에 컴퓨터 과학, 수학, 그리고 공학 등도 다룹니다.
컴퓨터 비전 알고리즘을 구현할 컴퓨터 시스템을 실제로 구축할 때 필요한 분야들이죠
그럼 이제 저를 포함한 이 수업의 교수진과 운영진들을 간단히 설명해 드리겠습니다.
저와 Serena는 Fei-Fei Li 교수님의 지도하에 있는 Stanford Vision Lab의 박사과정 (PhD) 학생입니다.
그리고 저희 Lab은 기계학습과 컴퓨터과학에 관련된 연구들을 진행하고 있습니다.
저 같은 경우에는 Language와 Vision에 좀 더 집중하고 있습니다. 일부 프로젝트도 진행하고 있습니다.
저희 Lab에서는 다양한 연구를 진행하고 있습니다. 그 밖에도 Lab에서는 신경과학과 인지과학과 관련된 분야도 연구합니다.
아마도 여러분은 CS231n이 Stanford의 다른 수업들과 어떤 연관성이 있는지 궁금하실 것입니다.
이 수업은 여러분이 컴퓨터 비전의 기초개론을 알고 있다고 가정하고 수업을 진행합니다.
그러니 만일 여러분이 학부생이거나 혹은 컴퓨터 비전이 처음이시라면
Fei-Fei 와 Juan Carlos Niebles의 CS131을 선수 과목으로 수강하셨어야 합니다.
그리고 Chris Mannin & Richard Socher의 딥러닝 & 자연어처리 수업이 지난 학기에 있었습니다.
아마 대다수가 지난 학기에 그 수업을 수강하셨을 것 같습니다.
CS231n은 그 수업과 일부 겹치는 부분이 있습니다.
하지만 여기에서는 컴퓨터 비전에 초점을 맞춥니다.
또한 Silvio Savarese 교수께서 이번 학기에 CS231a를 강의하십니다.
Silvio Savarese 교수가 가르치는 CS231a입니다.
그리고 CS231a는 컴퓨터 비전을 둘러싼 조금 더 넓은 분야들에 초점을 맞추고 있습니다.
3D reconstruction, 로봇 비전 등 CS231n보다 광범위한 분야를 다루게 됩니다.
여기 CS231n은 신경망(Neural Network), 특히 CNN과 관련된 세부 분야를 중점적으로 배우게 될 것입니다
물론 세미나 수업도 진행할 예정입니다.
세미나 일정이 매년 변동하므로 자세한 사항은 강의계획서와 수업시간표를 확인하시길 바랍니다.
보통 첫 수업은 Fei-Fei Li 교수님이 진행하시지만 안타깝게도 오늘 오실 수 없으셨습니다.
대신 Fei Fei 교수님이 안 계시므로 다른 방법을 고안했습니다.
교수님께서 Computer Vision의 역사를 소개하는 비디오를 녹화하셨습니다.
이 수업은 컴퓨터 비전 수업이기 때문에 오늘날의 CNN을 발전시킨 기존연구의 역사와 흐름을 이해해야만 합니다.
가상의 Fei Fei 교수님을 소개하겠습니다.
[웃음]
여러분께 컴퓨터 비전의 역사를 간단히 소개해 주실 것입니다.
자 우선 오늘의 강의목표를 살펴보겠습니다. 두 가지 주제가 있습니다. 컴퓨터 비전의 역사와 우리 CS231n 수업의 개요입니다.
그렇다면 비전(시각)과 컴퓨터 비전이 언제 어디에서 비롯됐고 현재는 어디쯤 왔는지를 알아보겠습니다.
비전의 역사는 아주 오래전으로 돌아갑니다. 정확하게는 5억 4천만 년 전이죠.
그 시대의 삶은 어땠을까요? 지구 대부분은 물이었고
바다를 부유하는 일부 생물들만 존재했습니다.
이들의 삶은 단조로웠습니다. 그들은 많이 움직이지 않았고 눈(eyes) 같은 건 존재하지 않았습니다.
먹이가 주변에 있으면 잡아먹고 없으면 그저 둥둥 떠 있는 것이 다였습니다.
하지만 5억 4천만 년 전에 아주 놀라운 사건이 벌어졌습니다.
동물학자들은 화석을 연구하면서 천만 년이라는 아주 짧은 시기 동안에 생물의 종이 폭발적으로 늘어났다는 것을 발견했습니다.
얼마 없던 종의 수가 수십만이 된 것입니다. 정말 신기한 일이었습니다. 이유가 무엇이었을까요?
많은 가설이 있었지만, 여전히 수년간 풀지 못한 숙제였습니다. 진화 생물학자들은 이를 "진화의 빅뱅"이라고 불렀습니다.
앤드류 파커 (Andrew Parker)는 이 연구에서 가장 설득력 있는 이론 중 하나를 제안했습니다
그는 약 5억 4천만 년 전 최초의 눈(eyes)이 생겨났다는 것을 발견했습니다. 비젼(시각)의 탄생이
폭발적인 종 분화의 시기를 촉발시킨 것입니다. 생물들은 갑자기 볼 수 있게 되었습니다. 볼 수 있다면 삶은
훨씬 더 능동적이게됩니다. 일부 포식자들은 먹이를 찾아다니고
먹이들은 포식자로부터 달아나야만 했죠. 그래서 비전의 도래는
진화적 군비경쟁을 촉발시켰고 생물들은 하나의 종으로 살아남으려면 빠르게 진화해야만 했습니다.
이것이 바로 비전의 태동입니다. 5억 4천만 년 후(현재)
비전은 거의 모든 동물, 특히 지능을 가진 동물들의
가장 큰 감각 체계로 발전했습니다. 우리 인간은 대뇌 피질의 50%가량의 뉴런이
시각처리에 관여합니다. 비전은 가장 큰 감각체계이며
우리가 생존하고, 일하고, 움직이고, 어떤 것들을 다루고,
의사소통하고, 오락을 즐기는 등 많은 것들을 가능하게 해줍니다. 비전은 동물들에게 중요하며
특히 지능을 가진 동물들에게 정말 중요합니다. 지금까지는 생물학적 비전의
짧은 줄거리였습니다만, 그렇다면 인간이 만든 공학적 비전인 카메라의 역사는 어떨까요?
오늘날 우리가 알고 있는 초창기의 카메라는
1600년대 르네상스 시대의 카메라인 Obscura입니다.
이 카메라는 핀홀 카메라 이론을 기반으로 한 카메라입니다.
Obscura는 생물학적으로 발전한 초기의 눈과 상당히 유사합니다. 빛을 모아주는 구멍이 하나 있고
카메라 뒤편의 평평한 면은 정보를 모으고
이미지를 투영합니다. 카메라 기술이 발전하면서 오늘날 카메라는 어디에나 있습니다.
카메라는 스마트폰 카메라나 다른 여러 기기에 이르기까지 사람들이 사용하는 가장 인기 있는 센서 중 하나가 되었습니다.
그동안에 생물학자들은 비전의 매커니즘을 연구하기 시작했습니다. 인간과 동물의 비전에 연구에 가장 영향력 있었을 뿐만 아니라
컴퓨터 비전에도 영감을 준 한 연구가 있었습니다. 1950/60년대 전기생리학을 이용한 Hubel과 Wiesel의 연구입니다.
그들이 묻고 싶었던 질문은 바로 "포유류의 시각적 처리 메커니즘은 무엇일까?" 였습니다.
그래서 그들은 고양이의 뇌를 연구하기로 합니다.
시각 처리 매커니즘만 보면 고양이와 인간은 비슷합니다.
그들의 고양이 두뇌 뒷면에 전극 몇 개를 꽂았습니다. "일차 시각 피질"이 있는 곳이었죠
그리고 어떤 자극을 줘야 일차 시각 피질의 뉴런들이 격렬하게 반응하는지 관찰하였습니다.
그들은 일차 시각 피질에는 다양한 종류의 세포가 있다는 것을 알았습니다.
그중 가장 중요한 세포가 있었는데 그 세포들은 아주 단순했습니다. 경계(edges)가 움직이면 이에 반응하는 세포들이었습니다.
물론 더 복잡한 세포들도 있긴 하지만, 주된 발견은 시각 처리가 처음에는 단순한 구조로 시작되며
그 정보가 통로를 거치면서 점점 복잡해진다는 것입니다.
실제 세상을 제대로 인지할 수 있을 때까지 말이죠.
컴퓨터 비전의 역사는 60년대 초반에 태동합니다. Block World는 Larry Roberts의 연구는
아마도 컴퓨터 비전 분야에서의 최초의 박사 학위 논문입니다.
이 연구에서는 우리 눈에 보이는 사물들을 기하학적 모양으로 단순화시켰습니다.
이 연구의 목표는 우리 눈에 보이는 세상을 인식하고 그 모양을 재구성하는 일이었습니다.
1966년에는 MIT 여름 프로젝트가 하나 진행되었는데, 아주 유명하죠 바로 "The Summer Vision Project" 입니다.
당시 프로젝트의 목표는, 제가 읽어 드리겠습니다. "시각 시스템의 전반을 구현하기 위해서
프로젝트 참가자들을 효율적으로 이용하는 것." 이였습니다.
다시 말해 그들은 그 여름 안에 대부분의 시각 체계를 구현해 내려는 야심 찬 목표를 세우고 있었던 것입니다.
이는 아주 야심 찬 목표였습니다. 그로부터 50년이 지났습니다.
"컴퓨터 비전"이라는 분야가 한 여름 프로젝트에서 피어나서는
현재 전 세계 수천 명의 연구자들이 아직도 비전의 가장 근본적인 문제들을 연구하고 있습니다.
컴퓨터 비전은 아직 숙제가 많지만, 인공지능 분야에서 가장 중요하고 빠르게 성장하는 분야 중 하나입니다.
언급하지 않을 수 없는 인물이 한 명 더 있습니다. 그는 바로 David Marr입니다.
David Marr은 MIT의 비전 과학자였으며 그는 70년대 후기에 아주 유명한 책을 한 권 저술합니다.
이 책은 그가 비전을 무엇이라 생각하는지, 그리고 어떤 방향으로 컴퓨터 비전이 나아가야 하는지, 그리고 컴퓨터가 비전을 인식하게 하기 위해
어떤 방향으로 알고리즘을 개발해야 하는지를 다룬 책이었습니다.
그는 그의 저서에서, 우리가 눈으로 받아들인 "이미지"를 "최종적인 full 3D 표현"으로 만들려면
몇 단계의 과정을 거쳐야만 한다고 주장했습니다. 첫 단계는, 그가 부르길 "Primal Sketch"라고 하는 단계입니다.
이 과정은 주로 경계(edges), 막대(bars), 끝(ends), 가상의 선(virtual lines),
커브(curves), 경계(boundaries)가 표현되는 과정입니다. 이 과정은 신경과학자들에게 영감을 받은 것들이죠.
Hubel과 Wiesel은 시각처리의 초기 단계는 경계와 같은 단순한 구조와 아주 밀접한 관계가 있다고 했었죠
경계와 커브 이후의 다음 단계는, 그가 부르기로는
"2.5-D sketch"라는 단계이며 이 단계에서는 시각 장면을 구성하는 표면(surfaces) 정보,
깊이 정보, 레이어, 불연속 점과 같은 것들을 종합합니다.
그리고 결국에 그 모든 것을 한데 모아서 surface and volumetric primives의 형태의
계층적으로 조직화된 최종적인 3D 모델을 만들어 냅니다.
그리고 이런 방식은 "비전이 무엇인가"라는 것에 대한 아주 "이상적인" 사고과정이었습니다. 그리고 이런 방식의 사고방식은
실제로 수십 년간 컴퓨터 비전 분야를 지배했으며
학생들이 컴퓨터 비전을 처음 입문하고 나서 "어떻게 시각정보를 분석할 수 있을까"라는 질문을 던졌을 때
직관적인 생각해 볼 수 있는 방법이었습니다.
70년대에는 또 다른 아주 중요한 연구들이 있었습니다.
"우리는 어떻게 해야 장난감 같은 단순한 블록 세계를 뛰어넘어서
실제 세계를 인식하고 표현할 수 있을까?"라는 질문을 하기 시작했습니다. 70 년대를 생각해보면
그 당시에는 사용할 수 있는 데이터가 거의 없었습니다. 컴퓨터도 정말 느렸고
심지어 PC가 보급되기도 전이죠. 이 상황에서 컴퓨터 과학자들은 어떻게 해야 대상을 인식하고 표현할 수 있을지를 고민하기 시작했습니다.
Stanford와 SRI에서 과학자들이 서로 비슷한 아이디어를 제안했습니다.
하나는 "generalized cylinder"이고 하나는 "pictorial structure"입니다.
기본 개념은 "모든 객체는 단순한 기하학적 형태로 표현할 수 있다"라는 것입니다.
가령 사람은 원통 모양을 조합해서 만들 수 있습니다. (왼쪽 그림) 또는 "주요 부위"와 "관절"로 표현할 수도 있을 것입니다. (오른쪽 그림)
두 방법 모두 단순한 모양과 기하학적인 구성을 이용해서 복잡한 객체를 단순화시키는 방법입니다.
이러한 연구들은 수년간 다른 연구에 상당히 많은 영향을 미쳤습니다.
80년대 또 다른 사례로, David Lowe는 어떻게 하면 단순한 구조로 실제 세계를 재구성/인식할 수 있을지 고민했습니다.
David Lowe는 이 연구에서 면도기를 인식하기 위해서 면도기를
선(lines)과 경계(edges) 그리고 직선(straight lines) 그리고 이들의 조합을 이용해서 구성했습니다.
60/70/80년대에는 컴퓨터 비전으로 어떤 일을 할 수 있을까 고민한 시대였습니다. 하지만 너무 어려운 문제였습니다.
지금까지 제가 보여 드린 연구들이 모두 아주 대담했고 큰 야망을 가진 시도였지만
그들은 단순한 수준(toy example)에 불과했습니다.
현실 세계에서 잘 동작할지를 생각해보면 많이 진보하지 못했다고 할 수 있죠. 그래서 컴퓨터 비전 연구자들은
우리가 도대체 무슨 실수를 하고 있을까 고민하다가 한가지 질문을 떠올리게 됩니다.
객체인식이 너무 어렵다면 우선 객체 분할(segmentation) 이 우선이 아니었을까 라고 말이죠
객체분할은 이미지의 각 픽셀을 의미 있는 방향으로 군집화하는 방법입니다.
픽셀을 모아놔도 사람을 정확히 인식할 수 없을지도 모르지만
적어도 배경인 픽셀과 사람이 속해 있을지도 모르는 픽셀을 가려낼 수는 있었습니다.
이를 "영상분할(Image Segmentation)"이라고 합니다. 이 문제를 다룬 아주 중요한 연구가 있었는데
Berkeley 대학의 Jitendra Malik 교수와 그의 제자인 Jianbo Shi의 연구였습니다.
이 연구는 영상분할 문제를 해결하기 위해서 그래프 이론을 도입했습니다.
그리고 컴퓨터 비전에서 유난히 발전 속도가 빨랐던 분야가 있었습니다.
바로 "얼굴인식" 입니다. 인간에게 가장 중요한 부위 중 하나가 바로 얼굴이죠.
어쩌면 얼굴이 가장 중요할 수도 있겠군요.
대략 1999/2000년대에는 "기계학습", 특히나 "통계적 기계학습" 이라는 방법이 점차 탄력을 얻기 시작했습니다.
가령 "Support Vector Machine", "Boosting", "Graphical models" 그리고 초기 "Neural Network" 등이 있었습니다.
그중 가장 큰 기여를 한 연구는 바로
Paul Viola와 Michael Jones이 AdaBoost를 이용해 실시간 얼굴인식에 성공한 것입니다.
이 연구는 당시 아주 대단한 성과였습니다. 연구 당시는 2001년이었고
컴퓨터는 여전히 엄청 느렸습니다. 하지만 그들의 얼굴인식 알고리즘은
실시간과 가깝게(near-real-time) 인식할 수 있었고 논문발표 5년이 지난 -
2006년에 Fujifilm은 실시간 얼굴인식을 지원하는 최초의 디지털카메라를 선보였습니다.
이는 기초 과학 연구의 성과를 실제 응용 제품으로 가장 빠르게 전달한 사례라고 할 수 있습니다.
자! 이제 다시 "어떻게 객체를 잘 인식할 것인가?" 라는 질문으로 다시 한번 돌아가 봅시다.
90년대 후반부터 2010년도까지의 시대를 풍미했던 알고리즘은 "특징기반 객체인식 알고리즘" 이었습니다. 이 시절 나온 -
아주 유명한 알고리즘이 바로 David Lowe의 SIFT feature입니다. 그의 아이디어는 전체 객체를 -
가령, 여기 정지 표지판이 있습니다. 이 정지 표지판들을 서로 매칭하기는 상당히 어렵죠
카메라 앵글이 변할 수 있고, 겹치거나 화각이 변하고 빛도 변하고 객체 자체도 얼마든지 변할 수 있습니다.
하지만 그들은 객체의 특징 중 일부는 다양한 변화에 조금 더 강인하고 불변하다는 점을 발견했습니다.
그리하여 객체인식은 객체에서 이와 같은 중요한 특징들을 찾아내고
그 특징들을 다른 객체에 매칭시키는 과제가 되었습니다. 이미지 전체를 매칭하는 일보다 훨씬 쉬운 일이었죠.
이 그림은 그 논문에서 가져온 것입니다. 정지표지판 이미지에서 일부 SIFT 특징들을 추출하고
또 다른 정지 표지판에서도 특징을 추출하여 이를 식별하고 매칭합니다.
이미지에 존재하는 "특징"을 사용하게 되면서
컴퓨터 비전은 또 한 번의 도약을 할 수 있었습니다. 그리고 장면 전체를 인식하기에 이르렀습니다.
한 예로, Spatial Pyramid Matching이 있습니다. 기본 아이디어는 우리가 특징들을 잘 뽑아낼 수만 있다면
그 특징들이 일종의 "단서"를 제공해 줄 수 있다는 것이었죠 이미지가 풍경인지, 부엌인지, 또는 고속도로인지 하는 것을 말이죠.
이 연구는 이미지 내의 여러 부분과 여러 해상도에서 추출한 특징을 하나의 특징 기술자로 표현하고
Support Vector Algorithm을 적용합니다.
이런 방식의 연구들은 사람 인식에도 탄력을 주었습니다.
여러 특징들을 잘 조합해 보자는 시도들이었죠 사람인식에 관련된 연구들도 아주 많았습니다.
사람인식과 관련된 연구들은 어떻게 해야 사람의 몸을 현실적으로 모델링할 수 있을지에 관련된 연구였습니다.
그중 하나는 "Histogram Of Gradients" 입니다. , 또 한가지는 -
"Deformable Part Models" 입니다. 그 당시에는 60/70/80년대를 거치고
21세기를 맞이하고 있었고 하나의 변곡점을 마주하게 됩니다.
사진의 품질이 점점 좋아졌습니다. 인터넷과 디지털카메라의 발전은 더더욱 좋은 실험 데이터를 만들어 낼 수 있었습니다.
2000년대 초에 일궈낸 것 중 하나는 바로 컴퓨터 비전이 앞으로 풀어야 할 문제가 무엇인지의 정의를 어느 정도 내렸다는 것입니다.
물론 해결해야 할 다양한 문제가 있겠지만, 이 또한 아주 중요한 문제였습니다. 바로 "객체인식" 입니다.
제가 여태 말씀드린 것들이 객체인식이지만 2000년대 초 -
우리는 Benchmark Dataset를 모으기 시작했습니다. 객체인식 기술의 어디쯤 왔는지 측정해 보기 위해서였죠
그 중 하나는 PASCAL Visual Object Challenge(VOC) 입니다. 이 데이터셋에는 20개의 클래스가 있고
여기 보이는 것들과 같이 기차, 비행기, 사람이 있고 소, 병, 고양이 등도 있는 것으로 기억합니다. 데이터셋은
클래스당 수천 수만 개의 이미지들이 있었으며, 다양한 연구 집단에서
이를 통해 알고리즘의 자신들의 알고리즘을 테스트했고
얼마나 진보했는지를 지켜보았습니다. 여기 2007년부터 2012년도까지의 표가 있습니다.
객체인식 성능은 꾸준히 증가했습니다. 많은 진보가 이루어졌죠
그 무렵, Princeton과 Stanford에 있던 그룹에서 더 어려운 질문을 던졌습니다. 우리는 이 세상의 모든 객체들을
인식할 준비가 되었는가? 였습니다. 이 질문은 한 사실로부터 비롯되었습니다.
거의 대부분의 기계학습 알고리즘에 해당하는 사실이었습니다.
Graphical Model, SVM, AdaBoost 같은 기계학습 알고리즘들이 트레이닝 과정에서 Overfit을 하는 것 같았습니다.
이 문제의 원인 중 하나는 시각 데이터가 너무 복잡하다는 것입니다.
모델의 입력은 복잡한 고차원 데이터였고, 이로 인해 모델을 fit하려면 더 많은 파라미터가 필요했죠
학습 데이터가 부족하면 Overfiting이 훨씬 더 빠르게 발생했고 일반화 능력이 떨어졌습니다.
우리에게는 두 가지 motivation이 있었습니다. 하나는 이 세상의 모든 것들을 인식하고 싶다는 것이고
또 하나는 기계학습의 Overfiting 문제를 극복해보자는 것이었죠
이 동기를 바탕으로 ImageNet 프로젝트를 시작했습니다. 구할 수 있는 모든 이미지를 담은 가장 큰 데이터셋을 만들고 싶었습니다.
이 데이터셋으로 모델을 학습시킬 수 있고 Benchmark도 할 수 있도록 말이죠. 프로젝트는 약 3년 정도 걸렸습니다.
어려운 일도 많았습니다. 우선 인터넷에서 수십억 장의 이미지를 다운받았고 WordNet이라는 Dictionary로 정리했습니다.
WordNet에는 수천 가지의 객체 클래스가 있습니다.
그리고 Clever Crowd Engineering trick을 도입했습니다. Amazon Mechanical Turk에서 사용하는
이미지의 정렬, 정제, 레이블 등을 제공하는 플랫폼입니다.
그 결과 ImageNet은 대략 15만 장에 달하는 이미지와 22만 가지의 클래스 카테고리를 보유하게 되었습니다.
아마도 당시 AI 분야에서 만든 가장 큰 데이터셋 이었습니다. ImageNet 덕분에 객체인식은 다른 국면으로 접어들었습니다.
하지만 ImageNet을 Benchmark에 어떻게 활용하는지가 큰 화두였습니다.
그래서 ImageNet 팀은 2009년부터 국제 규모의 대회를 주최했습니다. ILSVRC입니다. 이 대회를 위해서
1000개의 객체에서 140만 개의 test set 이미지를 엄선했습니다.
이 대회의 목적은 이미지 분류 문제를 푸는 알고리즘들을 테스트하기 위함이었습니다.
여기 예제 이미지들이 있습니다. 참가자들은 정답 후보를 총 5가지 고를 수 있습니다. 5개 중에 정답이 있으면 맞춘 것이죠
Image Classification Challenge의 결과입니다. 2010년도부터 2015년도까지의 결과입니다.
x은 연도를, y축은 오류율을 입니다.
좋은 소식으로는 오류율이 점차 감소하고 있습니다.
2012년도의 오류율은 사람보다 낮습니다. 여기에서의 사람은
Stanford의 한 PhD 학생입니다. 이 대회에 참가한 알고리즘처럼 테스트를 수행하며 몇 주를 보내야만 했습니다.
비록 컴퓨터 비전이 아직 객체인식의 모든 문제를 풀지는 못했지만, 진전이 있었다는 것은 사실입니다.
하지만 실생활에 적용하기에는 턱없이 부족했던 낮은 오류율이 인간의 수준으로 오기까지는
불과 몇 년뿐이 걸리지 않았습니다. 그리고 여러분이 이 그래프에서 절대로 놓쳐서 안 되는 특별한 순간이 있습니다.
바로 2012년입니다. 처음 2년 동안은 오류율이 약 25%를 맴돌았습니다. 2012년에는 오류율이 16%로 거의 10%가량 떨어졌고
물론 현재의 오류율이 더 낮지만 2012년도의 감소는 아주 중요합니다.
2012년도에 우승한 알고리즘은 convolutional neural network 모델입니다.
CNN은 그 당시 다른 알고리즘들을 능가하고 ImageNet Challenge에서 우승하였습니다.
우리가 한 학기 동안 배울 내용이 바로 Convolutional neural network에 관한 것입니다.
CNN 모델이 무엇인지 심도 깊게 다룰 것입니다. CNN을 Deep Learning이라고도 합니다.
Deep Learning이 더 유명한 이름이겠군요
앞으로 CNN이 무엇인지, 어떤 법칙이 있는지, 어떤 선례가 있는지, 이 모델의 최근 동향은 어떠한지를 살펴볼 것입니다. 하지만 이 역사의
시작은 바로 2012년입니다. CNN, Deep learning 모델은 컴퓨터 비전 분야의 진보를 이뤄냄으로써 CNN의 우수성을
입증하였습니다. 자연어 처리나 음성 인식과 같은 다른 관련 분야들도 더불어서 말이죠. 소개는 이쯤 해두고
CS231n 수업 소개를 위해서 나머지 시간은 Justin에게 맡기도록 하겠습니다.
Fei-Fei 교수님 감사합니다. 제가 여기서 이어받겠습니다.
지금부터는 주제를 바꿔서 우리 수업과 관련된 이야기를 해볼까 합니다.
이 수업에서 중점적으로 다룰 문제는 Image Classification입니다.
앞서 ImageNet Challenge 이야기에서 살짝 들어보셨을 것입니다.
Image Classification의 문제 정의를 해보자면 알고리즘이 이미지 한 장을 봅니다.
몇 개의 고정된 카테고리 안에서 정답 하나를 고르는 거죠
이 방법이 다소 한정적이거나 인위적으로 보일 수도 있지만 사실 매우 일반적입니다.
이 문제는 다양한 환경에 적용될 수 있습니다. industry이던 academia이던 말이죠. 다양한 곳에서 적용 가능합니다.
가령 음식, 음식의 칼로리, 미술작품들 등을 인식해야 하는 다양한 제품에 적용할 수 있습니다.
따라서 image classification이라는 간단한 도구가 자체로도 유용할뿐더러 다양한 응용이 될 수도 있습니다.
수업에서는 다양한 문제들을 다룰 것입니다. 하지만 이 문제들 모두 image classification 기반하에 일궈진 것들입니다.
그리고 object detection과 image captioning도 배워 볼 것입니다.
object detection 문제는 classification과 조금 다릅니다.
이 이미지가 고양이다, 개다, 말이다 이렇게 하는 실제로 어디에 있는지 네모박스를 그릴 수 있어야 합니다.
네모박스를 객체의 위치에 정확히 그려 넣어야 합니다.
image captioning 도 배울 것입니다. 이미지가 입력으로 주어지면 이미지를 묘사하는 적절한 문장을 생성해야 합니다.
이 문제가 어렵고 복잡해 보이고 Image classification과도 별로 관련이 없어 보일 수 있지만
image classification 기술을 이런 문제들에서 충분히 재사용할 수 있습니다.
지금까지는 ImageNet Challenge의 맥락에서 말씀드렸습니다만 최근 컴퓨터 비전 분야의 진보를 이끌어낸 주역은 바로
Convolutional neural networks, 즉 CNN입니다. 또는 convnet으로도 불리죠
지난 몇 해 간 ImageNet Challenge의 우승자들을 살펴봅시다.
2011년에서 Lin et al의 알고리즘은 보시면 여전히 계층적(hierarchical)이죠
여러 단계가 있습니다. 특징들을 뽑고, 지역 불변 특징들을 계산하고, pooling을 거치고 이렇게 여러 단계를 거쳐서
최종적인 특징 기술자를 Linear SVM에 태웁니다.
핵심은 여전히 "계층적" 이라는 점입니다. edges를 뽑고 "불변 특징" 의 개념도 들어있습니다.
그리고 대부분 이러한 직관들은 CNN에도 영향을 미칩니다.
하지만 2012년 가장 획기적인 순간이었습니다.
당시 Toronto에서 Jeff Hinton 교수님의 연구실의 PHD였던 Alex Krizhevsky와 Ilya Sutskever는
7-Layer Convolutional neural network 을 만들었습니다.
AlexNet 또는 Supervision으로도 알려져 있습니다. AlexNet은 LSVRC'12 에서 아주 좋은 성과를 달성했습니다.
이후 ImageNet의 우승 트로피는 매년 Neural Network의 몫이었습니다.
그리고 이러한 추세로 CNN은 매년 더 깊어져 갔습니다.
AlexNet은 7(8)-Layer Neural Network입니다. Layer를 세는 방식에 따라 조금 다릅니다.
2015년에 네트워크가 훨씬 더 깊어졌습니다. Google의 GoogleNet 그리고 Oxford의 VGG가 바로 그 주인공이죠.
2015년에는 정말 대박입니다. MSRA의 Residual Network의 Layer 수는 152개에 육박합니다.
이후 Layer 200개까지 쌓으면 성능이 더 좋아진다고는 하지만 아마도 여러분의 GPU 메모리가 감당할 수 없을 것입니다.
나중에 더 다루기로 하죠
오늘 수업에서 알고 가셔야 할 점은 2012년의 CNN의 시대가 도래했고, 이후 CNN을 개선하고 튜닝하려는 많은 시도들이 있었다는 것입니다.
그리고 이 강의 전반에 걸쳐 CNN 모델들이 어떻게 동작하는지는 심도 깊게 살펴볼 것입니다.
하지만 한 가지 명심하셔야 할 점은 CNN이 2012년 ImageNet Challenge에서 빛을 본 것은 사실이지만
CNN이 2012년에 발명된 것은 아닙니다.
사실 CNN은 아주 오래전부터 존재했습니다.
CNN의 기초연구라고 한다면 90년도의 Jan LeCun과 Bell Labs와의 공동 과제를 말씀드릴 수 있습니다.
1998년에 그들은 숫자인식을 위해 CNN을 구축했습니다.
이들은 자필 수표 자동 판독과 우편주소 자동인식에 CNN을 적용하고 싶었습니다.
그들은 이미지를 입력으로 받아서 숫자와 문자를 인식할 수 있는 CNN을 만들었습니다.
CNN의 구조만 보자면 2012년의 AlexNet과 유사합니다.
그림처럼, raw pixel을 입력으로 받아 여러 Convolution Layer Layer를 거치고 Sub-Sampling,
Fully Connected Layer를 거치게 됩니다.
이 모든 건 다음 강의 부터 더 자세히 다루도록 하겠습니다.
하지만, 여러분이 이 두 그림을 보고 있자면 둘이 상당히 비슷해 보일 겁니다.
2012년의 CNN 아키텍쳐들은 서로 비슷비슷했습니다. 90년대의 LeNet 아키텍처를 공유하기 때문입니다.
그럼 이런 질문을 할 수 있겠군요 90년대부터 알고리즘이 있었다면
왜 최근에야 갑자기 유명해진 것일까요?
90년대 이래로 아주 큰 혁신들이 있었습니다.
하나는 바로 계산능력입니다. 무어의 법칙 덕분에 컴퓨터의 계산속도가 매년 빨라졌습니다.
완벽한 척도는 아니지만, CPU의 트랜지스터 개수만 세어봐도 90년대보다 몇십 배 이상 발전했음을 알 수 있죠
또한 graphics processing units의 진보도 한몫했습니다. GPU는 아주 강력한 병렬처리가 가능한데
계산 집약적인 CNN 모델을 고속으로 처리하는 데 안성맞춤입니다.
단지 더 많은 계산이 가능하다는 것만으로도 연구자들이 더 큰 아키텍쳐를 연구해 볼 수 있었고
경우 따라서는 기존의 고전 알고리즘들의 크기만 키웠음에도 훨씬 더 잘 동작하는 경우도 많았습니다.
연산량의 증가는 딥러닝의 역사에서 아주 중요한 요소입니다.
90년대와 지금은 데이터의 차이도 있었습니다.
CNN 알고리즘이 잘 동작하려면 아주 많은 레이블이 매겨진 이미지가 필요합니다.
90년대에는 레이블이 매겨진 이미지 데이터를 구하기가 쉽지 않았습니다. 아주 크고 다양한 데이터셋을 수집하기가 힘든 시기였습니다.
오늘날은 PASCAL이나 ImageNet 같은 규모가 크고 잘 분류된 레이블들을 가진 데이터셋이 많습니다.
90년대에와 비교하면 사용 가능한 데이터셋이 훨씬 많습니다.
큰 데이터셋들을 잘 활용하면 Higher Capacity Model을 만들 수 있습니다.
그렇게 학습시킨 모델들은 실생활 문제에서도 잘 동작했습니다.
하지만 가장 중요한 것은 CNN이 엄청 좋아 보이고 새로워 보이고 몇 해 전에 갑자기 툭 하고 튀어나온 것처럼 보이지만
그렇지 않다는 것입니다.
CNN스러운 알고리즘들은 이미 아주 오래전부터 있었습니다.
그리고 또 한 가지 중요한 점은 컴퓨터 비전 연구의 목적은 "사람처럼 볼 수 있는" 기계를 만드는 것입니다.
사람들은 시각 체계를 통해 아주 많은 것들을 할 수 있습니다.
여러분은 고양이나 강아지를 찾아서 사각형을 그리는 것 이상의 일들을 할 수 있습니다.
여러분의 시각체계는 컴퓨터 비전보다 훨씬 더 강력합니다.
컴퓨터 비전 분야 이야기를 해드리자면 아직도 우리가 풀어야 할 수많은 도전과제와 미해결 문제가 있습니다.
우리는 더 나은 일을 하고, 더 야심 찬 문제에 도전할 수 있도록 알고리즘을 계속해서 연구해야 합니다.
아직 풀지 못한 문제들의 예를 한번 살펴보겠습니다. 사실 예전부터 연구가 활발히 진행됐습니다.
Semantic Segmentation 즉 Perceptual Grouping 같은 문제들이죠
이미지 전체를 레이블링하는 것 대신 모든 픽셀 하나하나를 이해하는 것입니다.
Semantic Segmentation은 다음에 다시 다루도록 하죠
3D understanding은 실세계를 재구성하는 문제입니다. 제 생각에는 여전히 완벽하게 풀지는 못한 문제이죠
여러분도 엄청나게 많은 것들을 상상해 볼 수 있습니다.
행동 인식의 예를 들어볼까요
가령 어떤 사람이 비디오에서 무언가를 하고 있을 때, 그 행동을 인식할 수 있는 가장 좋은 방법은 무엇일까요? 상당히 도전적인 문제입니다.
그리고 증강현실, 가상현실, 또는 새로운 센서 등을 마주하게 되면
그 자체를 한 분야로 다뤄도 될 만큼 아주 새롭고 흥미롭고 도전적인 문제들을 만나게 될 것입니다.
지금부터 보여 드릴 것은 제가 연구실에서 진행 중인 프로젝트의 일부인데 Visual Genome이라는 데이터셋입니다.
이 프로젝트에서는 실제 세상에서 복잡한 것들을 일부 포착해 내려고 시도하고 있습니다.
이미지에 박스만 치는 게 아니라 커다란 의미론적 그래프로 표현하는 것이죠. 이 그래프는 객체를 식별하는 것을 넘어
그 장면에서의 객체 간의 관계, 객체의 성격, 행동 등을 나타낼 수 있습니다.
그리고 이런 방식을 이용한다면 실제 세상을 일부는 포착할 수 있지 않을까 예상합니다.
이런 것들은 우리가 단순하게 Classification만 할 때 활용하지 못했던 것들입니다.
이 프로젝트는 현시점으로서는 표준 접근방식은 아니지만
Image Classification만으로는 포착해 낼 수 없는 훨씬 더 다양한 일들이 있다는 사실을 알려 드리고 싶었습니다.
그런 관점에서, 정말 재밌는 연구가 하나 있습니다.
Fei-Fei 교수님의 Cal Tech에서의 박사과정 시절의 연구입니다.
연구를 소개해 드리자면 임의의 사람들을 붙잡아서 이런 사진을 아주 잠시 동안만 보여줬습니다.
사람들에게 아주 짧은 시간 동안만 이미지를 보여준 것입니다.
그런데 사람들은 이미지를 아주 잠깐만 봤음에도 이 같은 아주 긴 문장을 작성할 수 있었습니다.
주목할만한 결과였습니다. 인간은 이미지를 짧은 시간만 보더라도 이렇게 묘사할 수 있었습니다.
"사람들이 어떤 놀이 또는 싸움을 하고 있고, 두 명씩 짝지어져 있고, 왼쪽 사람은 무언가를 던지고 있고 -
잔디밭인 것 같은 느낌이 드니까 밖인 것 같고.." 등등
사람들이 이미지를 조금만 더 오래 볼 수만 있었다면 어땠을지 상상이 가실 것입니다.
이들이 누구이고 왜 저곳에서 게임을 하는지에 대해서 소설을 한 편 쓸 수 있을지 모르겠습니다.
외부 지식과 경험이 가미된다면 아마 끝도 없을 것입니다.
이미지의 내용을 아주 풍부하고 깊게 이해하는 것은 이는 컴퓨터 비전 분야가 진정으로 추구하는 방향입니다.
제 생각에는 컴퓨터 비전이라는 분야에는 많은 진보가 있었지만, 아직 가야 할 길은 멀고도 험난합니다.
다른 예를 하나 더 들어보겠습니다. Andrej Karpathy의 블로그에서 가져온 이미지입니다. 아주 재미있는 이미지입니다.
많은 사람들의 웃음을 자아냈습니다. 제가 보기에도 상당히 재미있는 이미지입니다. 왜 이 이미지가 웃기죠?
한 남자가 체중계에 서 있습니다. 뭐 보통 사람들이 체중을 재려고 체중계를 사용하곤 합니다.
그런데 어떤 사람이 뒤에서 몰래 체중계를 밟고 있군요. 우리는 체중계가 어떻게 동작할지 짐작할 수 있습니다.
저 남자는 자신의 "부풀려진" 체중을 보게 될 것이란 것도 알 수 있습니다.
하지만 더 많은 정보가 있습니다. 우리는 저 사람이 평범한 사람이 아니란 것을 알고 있습니다.
저 사람은 당시의 미국 대통령 Barack Obama입니다. 우리는 미국의 대통령이라면 존경받는 정치인이어야 한다고 생각합니다.
[웃음]
적어도 동료에게 이런 식의 장난을 치지 말아야 하겠죠
그런데 뒤쪽의 사람들이 이 장면을 보고 웃고 있군요
이를 미루어 우리는 사람들이 이 장면을 어떻게 받아드리는지 이해할 수 있습니다.
그들도 우리와 같은 생각을 한다는 것을 알 수 있죠
이건 정말 놀라운 것입니다. 이 이미지 한 장에 정말 많은 것들이 있습니다.
컴퓨터 비전 알고리즘이 이런 진정한 깊은 이해를 하기까지는 아직 갈 길이 멀다고 생각합니다.
이 분야가 큰 진보를 이루긴 했지만 갈 길은 한참 남았습니다. 연구자로서 저에게는 아주 짜릿한 일입니다.
앞으로 더 진보할 수 있는 흥미진진하고 재미있는 문제들이 우리를 기다리고 있기 때문입니다.
그래서 저는 컴퓨터 비전이 정말 재미있는 분야라는 것을 여러분이 아셨으면 좋겠습니다.
정말 재밌습니다. 그리고 매우 유용합니다. 아주 다양한 방법으로 이 세상에 기여할 수 있습니다.
컴퓨터 비전은 의학 진단, 자율주행, 로보틱스 등 어디든 적용할 수 있습니다.
그리고 인간의 지능을 이해하기 위한 여러 핵심 아이디어들을 집대성하는 일종의 실마리가 될지도 모릅니다.
제 생각에는 컴퓨터 비전은 정말 기상천외하고 재밌는 분야입니다.
저는 여러분과 이 수업을 빌어 그런 알고리즘들이 실제로 어떻게 동작하는지를 심도 깊게 다룰 수 있어서 정말 좋습니다.
여기까지는 컴퓨터 비전의 역사에 대한 저의 개인적인 견해였습니다.
혹시 궁금한 점이 있으신가요?
그러면 이제는 앞으로의 수업 방향에 대해서 말씀드리겠습니다.
우선 교수진에 대해서 말씀드리겠습니다. 이 수업은 Fei-Fei Li 교수님께서 가르치십니다.
이곳 Stanford의 컴퓨터 과학 교수님이시죠
그리고 제 지도 교수님이시기도 하고 Stanford Vision Lab의 교수님이십니다.
그리고 그 옆에 두 명은 저 Justin Tohnson과 Serena Yeung입니다. 그녀는 여기 앞에 서 있습니다.
우리 둘은 Fei-Fei 교수님의 지도하에 다양한 컴퓨터 비전 과제를 수행하고 있는 PHD 학생입니다.
우리에게 18명의 훌륭한 조교가 있습니다.
대부분은 여기 앞에 앉아 있습니다.
우리가 수업을 잘 진행하고, 모든 것이 잘 돌아갈 수 있도록 도와주는 얼굴 없는 영웅들입니다.
그러니 그들에게 잘해주세요.
[웃음]
말씀드려야 할 점이 있다면, 이 강의는 세 번째 열리는 강의이지만
Andrej Karpathy가 강의를 하지 않는 첫 번째 강의이기도 합니다.
그는 저와 아주 친한 친구입니다. 그 친구는 아직 안 죽었습니다. 괜찮습니다. 걱정 마세요.
[웃음]
이 수업의 발전과 역사의 대부분은 수년 동안 저와 함께 일해준 그의 덕분이었습니다.
그 사실은 여러분도 알고 계셨으면 좋겠습니다.
강의에 대해 말해보자면, 조교들과 연락할 수 있는 가장 좋은 방법은 Piazza를 이용하는 것입니다.
당장 가서 가입하세요
Piazza는 이 수업에 대해 의사소통을 할 수 있는 우리가 가장 선호하는 방법입니다.
만약 친구들 앞에서 질문하는 것이 꺼려진다면,
Piazza에 가서 익명으로 질문하세요. private 질문을 올릴 수도 있습니다. 교직원에게 직접 연락하십시오.
기본적으로 여러분이 필요한 것은 그저 Piazza를 경험하는 것입니다.
조교들의 메일링 리스트가 있긴 하지만
Piazza에 올리기 껄끄러운 개인적이거나 비공개적인 것들을 위해서만 쓰고
혹시나 정말 중요한 말 못 할 사항이 있다면, 저나, Serena, Fei-Fei 교수님께 직접 메일을 주셔도 되겠습니다. 이메일로 보내주십시오.
하지만 그 외의 조교와의 커뮤니케이션은 Piazza를 통해서야만 합니다.
올해는 부교재도 있습니다. 필수는 아닙니다. 이 책 없이도 이 강의를 들을 수 있습니다. 이 교재는 스스로 구하셔야 합니다.
개인적으로 아주 기분이 좋습니다. 이 책이 아마도 가장 처음 출간된 딥러닝 교과서입니다.
올해 초에 출간되었고 E.N. Goodfellow, Yoshua Bengio, Aaron Courville이 저자입니다.
슬라이드에 아마존 링크를 추가했습니다. 원한다면 구입하도록 하세요
하지만 온라인에 무료 컨텐츠도 있기 때문에 굳이 살 필요는 없습니다.
다시 한번 말하지만, 이 교재는 완전히 선택 사항입니다.
하지만 아마도 학기 동안 이 책의 일부를 읽으라고 공지할 수도 있습니다. 이 책은 여러분이 추가적인 관점을 얻는 데 많은 도움을 줄 것입니다.
이 수업의 철학은 여러분이 딥러닝에 관한 모든 알고리즘을 제대로 이해해야 한다는 것입니다.
아주 깊은 수준에서 이해해야 합니다. 어떤 Neural network 모델을 사용했을 때 정확히 어떻게 작동하는지 정확하게 이해해야 합니다.
그리고 그런 아키텍쳐를 선택하면 어떤 영향을 미치는지, 네트워크가 어떻게 학습되고 테스팅 되는지와 같은 것들을 알아야 합니다.
그리고 여러분은 나만의 CNN을 Python으로 밑바닥부터 구현해야 합니다.
여러분이 전체 foward/backward passes을 직접 구현하다 보면 결국 CNN모델을 완벽히 구현하게 될 것입니다.
저는 이것이 정말 좋다고 생각합니다.
하지만 실제로는 대부분의 사람들이 CNN을 밑바닥부터 구현하지는 않을 것입니다.
그렇기 때문에 여러분에게도 아주 실용적인 최신 소프트웨어 도구들 역시 소개해 드릴 것입니다.
Tensor Flow, Torch, PyTorch 와 같은 SOTA 소프트웨어들도 다룰 것입니다.
아마도 여러분은 그런 툴들을 강의 과제나 프로젝트를 진행하면서 접하실 수 있을 것입니다.
또 한 가지 말씀드릴 점은 이 강의가 아-주 SOTA 하는 것입니다. 저는 이점이 가장 마음에 듭니다.
이 분야는 아주 빠르게 변합니다.
ImageNet 그래프에도 보았듯이 2012년 이후로 엄청나게 변하고 있습니다. 제가 여기 있는 동안 일 년 내내 변하고 있죠
어쩌면 우리가 지난해에 다뤘던 수업 내용이 올해 들어서는 순식간에 사라질 수도 있습니다.
제가 이 과목을 가르칠 때 가장 좋아하는 대목이지요
이 분야는 과학적으로 새롭게 발견된 것들을 모조리 흡수할 수 있고 또 제가 여러분에게 그것들을 알려줄 수 있다는 점이 정말 좋습니다.
재밌는 것들도 있습니다.
심각하지 않은 재미있는 주제에 관해서도 다룰 것입니다.
이미지 캡셔닝과 같은 것인데 매우 재밌습니다.
이미지 캡셔닝은 이미지의 내용을 기술하는 것입니다.
그리고 여기 왼쪽에 보이는 DeepDream과 같은 좀 더 예술적인 것들에 관해서는 다룰 것입니다.
이것은 우리가 Neural Network를 통해 이런 사이키델릭한 이미지를 만들게도 해줍니다.
코스가 끝날쯤이면 어떻게 동작하는지 알 수 있을 겁니다.
오른쪽 그림은 style transfer입니다. 이미지가 주어지면 이미지를 피카소나 반 고흐와 같은 유명화가의 풍으로 바꿔줍니다.
이 또한 코스가 끝날쯤이면 어떻게 동작하는지 알게 되실 것입니다.
학기 동안 세 가지 과제가 있습니다.
첫 번째 과제는 잘하면 일주일 내로 끝낼 수도 있습니다. 그리고 중간고사가 있습니다.
그리고 여러분의 학점에서 가장 큰 비율을 차지하는 것이 바로 최종 코스 프로젝트인데, 3인 1조로 진행할 것이며,
여러분은 모든 사람들의 마음을 날려버릴 만큼 놀라운 프로젝트를 만드시면 됩니다.
제출기한 정책이 있습니다. 도합 7일 정도는 늦을 수 있고 여러분들의 과제 수행 중 자유롭게 분배할 수 있습니다.
몸이 조금 아프거나, 여행을 가거나, 컨퍼런스에 참가하거나 할 때 유용하게 사용하시면 됩니다.
하지만, 갑자기 학기 말에 와서는 "이번에 컨퍼런스에서 발표를 해야만 해요" 하고 하셔도 소용없습니다
late days를 잘 활용하시기 바랍니다.
하지만 만일 정상참작 할만한 피치 못할 사유가 있다면 조교들에게 이메일을 보내주시길 바랍니다.
또 한가지 알려 드릴 것은 collaboration policy입니다.
여러분은 Stanford 학생으로서 반드시 윤리규정 (honer code)을 명심해야만 합니다. 아주 중요합니다.
아주 엄격하게 다룰 것입니다.
반드시 윤리규정의 테두리 안에서 협력할 수 있도록 신중하게 행동해 주시기 바랍니다.
Pre-requisites에 대해 말씀드리겠습니다. Python이 가장 중요할 것 같네요
모든 프로그래밍 과제가 Python으로 진행됩니다.
C나 C++에 익숙해지는 것도 어느 정도는 유용할 것입니다.
이번 코스에서 C나 C++코드를 작성할 일은 없겠지만 과제를 하다 보면
여러 소프트웨어 패키지의 코드를 살펴볼 것이고, C++ 코드를 알면 패키지들이 어떻게 동작하는지 이해하는데 유용할 것입니다.
그리고 여러분이 미분을 안다고 가정하고 수업을 진행할 것입니다.
또한 일부 선형대수도 안다고 가정할 것입니다.
행렬이 무엇이고, 어떻게 곱하는지 등을 미리 알아두셔야 합니다.
여기에서 도함수 계산 등을 전부 다 가르칠 순 없습니다.
또한 CS131 또는 CS231a 수준의 컴퓨터 비전 지식이 있다고 가정하고 수업을 진행할 것입니다.
이 과목들을 수강한 적이 있는 분들은 수월할 것입니다.
그렇지 않아도 수업을 듣는 데 큰 지장은 없겠지만 따라잡으려면 좀 더 노력해야 할 것입니다. 그래도 아마 큰 문제는 없으리라 봅니다.
완전 완전 필수인 prerequisites은 없습니다.
또한 CS229 수준의 기계학습 배경 지식이 있다고 가정합니다.
하지만 기계학습 개념 중에서 정말 중요하다 싶은 것들을 필요할 때 마다 제가 다시 설명해 드릴 것입니다. 미리 익숙하면 좋겠죠
강의 홈페이지가 있습니다. 가서 확인해 보세요
많은 정보와 링크 강의계획 등 많은 자료가 있습니다.
오늘 다룰 것들은 거의 다 끝낸 것 같군요
그리고 이번 주 목요일부터는 본격적으로 수업을 진행하도록 하겠습니다.